Frequently, the amount of space needed to display data exceeds the display area of the region in which the data is to be displayed. Consequently, techniques have been developed to allow users to “scroll” the contents of a region. A scroll operation that causes content of the region to move up is referred to herein as an “up-scrolling operation”, even though on some devices up-scrolling is performed by pulling down the thumb of a scroll bar. During an up-scrolling operation, the content that is currently at the top of the display region scrolls out of the region (and is therefore no longer visible), and content that was previously not visible scrolls into the display region from the bottom of the display region. Conversely, a scroll operation that causes content of the region to move down is referred to herein as a down-scrolling operation. During a down-scrolling operation, previously undisplayed content enters the region from the top, and content scrolls out of the region at the bottom.
In addition to scrolling contents up and down within a region, scrolling can occur from left to right (“right-scrolling”), or from right to left (“left-scrolling”). During a left-scrolling operation, content enters the display region from the right, and leaves the display region from the left. Similarly, during a right-scrolling operation, content enters the display region from the left, and leaves the display region from the right.
For the purpose of explanation, any undisplayed content that logically resides above scrollable content that is currently visible in a display region is referred to herein as “hidden-above” content. Similarly, undisplayed content that logically resides below, left or right of the scrollable content that is currently visible in a display region is referred to respectively as “hidden-below”, “hidden-left”, and “hidden-right” content.
Frequently, a display region will have some content that does not scroll. For example, it is common for spreadsheets to have one of more header rows that stay fixed at the top of a display region, while the rest of the spreadsheet scrolls up and down. Using a fixed header in this manner is useful when the content in the header applies to all of the data in the spreadsheet. However, if the header information only applies to one section of the spreadsheet, keeping the header fixed at the top of the region can be confusing.
For example, a spreadsheet may have a first set of rows that contain employee information, and a second set of rows that contain purchase order information. The names of the fields that belong to the first set of rows will probably be different than the names of the fields that belong to the second set of rows. If a fixed header row lists the names of the fields of the first set of rows, the header row will be helpful while the first set of rows is displayed, but will cause confusion if the first set of rows is scrolled off the display region and only the second set of rows are visible.
To avoid the problem caused by fixed headers that only pertain to a subset of scrollable content, delayed-departure section headers have been developed. Delayed-departure section headers have three states: a scroll state, a fixed state, and a hidden-above state. A delayed departure header is in a scroll state when neither the header nor the section to which it corresponds is hidden-above. When in the scroll state, the delayed-departure header scrolls like any other scrollable content, in tandem with the section of data to which the delayed-departure header pertains.
A delayed-departure header is in the fixed state when the delayed departure header has reached to the top of the display region but not all of the section to which the header corresponds is hidden-above. When in the fixed state, the delayed-departure header remains fixed at the top of the display region. Thus, during an up-scrolling operation, a delayed-departure header's departure out of the top of a display region is “delayed” as long as any data from the section to which the delayed-departure header corresponds has not been up-scrolled out of the display region.
A delayed-departure section header is in the hidden-above state when all of the section to which the header corresponds is hidden-above. In the hidden-above state, the delayed-departure section header is not visible, and will remain hidden until a down-scrolling operation causes a portion of the section to which the header corresponds to scroll into the display region.
Delayed-departure section headers have been implemented in the “Contacts” and “Calendar” applications available on the iPad™ and iPhone™ devices available from Apple Inc. For example, in the Contacts application, contact names are listed alphabetically. Within the list, the names that start with each letter follow a section header that indicates the letter. For example, the names that start with “c” follow a section header with the letter “c”, and the names that start with “d” follow a section header with the letter “d”.
Because the headers are delayed-departure headers, the section header for “c” will not scroll off the top of the screen during an up-scroll operation until all of the names that start with “c” have been up-scrolled off the display. Similarly, the section header for “d” will not scroll off the top of the screen during an up-scroll operation until all of the names that start with “d” have been up-scrolled off the display. Consequently, the top of the Contacts screen will always have exactly one header row at the top, which will always be the header row of the letter of top-most visible contact name.